Data is typically conveyed in a communication network, such as a wireless network, in the form of packets. The packets of data communicated in the network are often vulnerable to corruption by various mechanisms including, for example, noise (e.g., channel noise), competing signals interfering with the communication, channel interference (e.g., intersymbol interference (ISI)), channel fading, etc. As a result, data arriving at a receiver may differ from the corresponding data communicated by a transmitter.
In order to facilitate the detection and correction of certain errors which may occur in a data transmission, various types of redundant information, often referred to as error correction codes, can be included as part of the transmitted data. Generally, these error correction codes are inserted into the data message itself (i.e., encoded) to enable reliable delivery of the data over an otherwise unreliable communication channel. Errors may also be corrected by a variety of communication techniques including those that allow a receiver to request retransmission of a packet whenever a missing packet or an error in a given packet is detected, or techniques involving the transmission of redundant packets which then enable the receiver to derive the correct data from the multiple packets.
Unfortunately, however, these known techniques for correcting errors in received data in a packet-based communication network require significant additional overhead to store and convey the required redundant information. The transmission of redundant information, even unnecessarily (e.g., when the data is not received in error), substantially increases a bandwidth requirement of the transmission, and is therefore undesirable. Moreover, even with the high cost of bandwidth, traditional error correction techniques are typically not adequate in handling bursting packet losses, which are common in a packet-based network (e.g., an Internet Protocol (IP) network). Thus, several problems remain in the reliable transmission of data in real-time over a packet-based communication network.